자바 오버로딩
IT 위키
자바 오버로딩(Java Overloading, 過載定義)은 같은 이름의 메서드를 매개변수의 개수, 타입 또는 순서를 다르게 하여 여러 개 정의하는 객체 지향 프로그래밍 기법이다.
1 개요[편집 | 원본 편집]
오버로딩은 메서드 이름의 재사용을 가능하게 하며, 호출되는 메서드는 컴파일 타임에 결정된다. 주로 생성자 또는 기능은 유사하지만 입력 값이 다른 메서드를 구현할 때 사용된다.
2 오버로딩의 조건[편집 | 원본 편집]
- 메서드 이름은 같아야 함
- 매개변수의 개수나 타입, 순서가 달라야 함
- 반환형만 다르고 매개변수가 동일하면 오버로딩 불가능
3 예제[편집 | 원본 편집]
다음은 오버로딩의 기본 예제이다.
public class Calculator {
// 정수 덧셈
int add(int a, int b) {
return a + b;
}
// 실수 덧셈
double add(double a, double b) {
return a + b;
}
// 정수 3개 덧셈
int add(int a, int b, int c) {
return a + b + c;
}
public static void main(String[] args) {
Calculator calc = new Calculator();
System.out.println(calc.add(2, 3)); // 출력: 5
System.out.println(calc.add(2.5, 3.5)); // 출력: 6.0
System.out.println(calc.add(1, 2, 3)); // 출력: 6
}
}
4 생성자 오버로딩[편집 | 원본 편집]
생성자도 오버로딩할 수 있으며, 객체를 다양한 방법으로 초기화하는 데 활용된다.
public class Person {
String name;
int age;
public Person() {
this.name = "이름없음";
this.age = 0;
}
public Person(String name) {
this.name = name;
this.age = 0;
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
5 오버로딩과 오버라이딩의 차이[편집 | 원본 편집]
- 오버로딩: 같은 클래스 내에서 메서드 이름은 같고 매개변수가 다름 (정적 다형성)
- 오버라이딩: 상속 관계에서 상위 클래스의 메서드를 하위 클래스가 재정의 (동적 다형성)
6 주의 사항[편집 | 원본 편집]
- 반환형이 다르기만 한 경우는 오버로딩이 아님
- 자바 컴파일러는 메서드의 시그니처(이름 + 매개변수)로 오버로딩을 판단함
- 자동 형 변환에 의해 예상치 못한 오버로딩 버전이 호출될 수 있음
7 관련 키워드[편집 | 원본 편집]
- 정적 다형성
- 메서드 시그니처
- 생성자 오버로딩
- 오버라이딩
8 같이 보기[편집 | 원본 편집]
9 참고 문헌[편집 | 원본 편집]
- Herbert Schildt, *Java: The Complete Reference*, McGraw-Hill Education, 2021.
- Kathy Sierra and Bert Bates, *Head First Java*, O'Reilly Media, 2022.